﻿// 中文注释：该文件实现了ChannelView类的成员函数，包括构造函数、更新通道记录和窗口大小变化处理
#include "ChannelView.h"
#include "ChannelScene.h"

/**
 * @brief 构造函数
 * @param parent 父窗口指针
 * 初始化场景对象并设置为视图的场景
 */
ChannelView::ChannelView(QWidget *parent)
    :QGraphicsView(parent),
      m_scene(new ChannelScene(this))  // 创建通道场景对象
{
	setAlignment(Qt::AlignTop | Qt::AlignLeft);// 设置视图对齐方式为左上角对齐
    // 设置视图的场景
    setScene(m_scene);
}

/**
 * @brief 析构函数
 * 释放场景对象资源
 */
ChannelView::~ChannelView()
{
    // 释放场景对象内存
    delete m_scene;
    // 将场景指针置为nullptr，避免悬空指针
    m_scene = Q_NULLPTR;
}

/**
 * @brief 更新通道记录
 * 
 * 将通道更新请求转发给场景对象处理，维护视图与场景的职责分离。
 * 该方法是视图层与场景层之间的桥梁接口。
 * 
 * @param num 需要更新/创建的通道数量，实际业务逻辑由场景对象实现
 * @note 参数会原样传递给ChannelScene::updateChannelRecord()
 */
void ChannelView::updateChannelRecord(int num)
{
    // 调用场景对象的updateChannelRecord方法
    m_scene->updateChannelRecord(num);
}

/**
 * @brief 大小变化事件
 * @param event 大小变化事件对象
 * 重写QGraphicsView的resizeEvent方法，当窗口大小变化时更新场景大小
 */
void ChannelView::resizeEvent(QResizeEvent *event)
{
    // 调用基类的resizeEvent方法
    QGraphicsView::resizeEvent(event);
    // 检查场景对象是否存在
    if(m_scene)
    {
        // 重置场景矩形大小（减去2像素用于边框）
        m_scene->resetRect(QRectF(0, 0, width()-2, height()-2));
    }
}
